﻿using BLevy.Negocio;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace BLevy.UI
{
    public partial class frmCobradoresLiquidacionesEmitidas : Form
    {
        public frmCobradoresLiquidacionesEmitidas()
        {
            InitializeComponent();
        }

        private void btnSalir_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void IniciarControles()
        {
            txtNroCupon.Text = string.Empty;

            cmbCobrador.Enabled = false;
            dtpDesde.Enabled = false;
            dtpHasta.Enabled = false;
        }


        private void frmCobradoresLiquidacionesEmitidas_Load(object sender, EventArgs e)
        {
            IniciarControles();

            GetCobradores();
            FiltrarForm();
        }

        private void GetCobradores()
        {
            try
            {
                cmbCobrador.ValueMember = "id";
                cmbCobrador.DisplayMember = "nombre_completo";
                cmbCobrador.DataSource = Cobradores.FindAll().Where(x => x.id != 1).ToList();
            }
            catch (Exception e)
            {
                MessageBox.Show("Error : " + e.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }

        }

        private void FiltrarForm()
        {
            string nro_cupon = txtNroCupon.Text == string.Empty ? null : txtNroCupon.Text;
            int? cobrador_id = chkCobrador.Checked ? (int?)cmbCobrador.SelectedValue : null;
            DateTime? fecha_desde = ckbFechas.Checked ? (DateTime?)dtpDesde.Value : null;
            DateTime? fecha_hasta = ckbFechas.Checked ? (DateTime?)dtpHasta.Value : null;

            try
            {
                var query = (from row in CobradoresLiquidaciones.FindAllDetallesConCobradorFiltro(nro_cupon, cobrador_id, fecha_desde,
                                 fecha_hasta).OrderBy(x => x.cobrador_liquidacion.fecha_liquidacion)

                             select new
                             {
                                 id = String.Format("{0:000}", row.cobrador_liquidacion.id),
                                 fecha_liquidacion = row.cobrador_liquidacion.fecha_liquidacion.ToShortDateString(),
                                 row.cobrador_liquidacion.cobrador.nombre_completo,
                                 row.cobrador_cobro.cobro.cupon.numero,
                                 fecha_cobro = row.cobrador_cobro.fecha_cobro.ToShortDateString(),
                                 row.cobrador_cobro.comision
                             }).ToList();

                dgvLiquidaciones.Rows.Clear();
                foreach (var fila in query)
                {
                    dgvLiquidaciones.Rows.Add(fila.id, fila.fecha_liquidacion, fila.nombre_completo,
                        fila.numero, fila.fecha_cobro, fila.comision);
                }

                dgvLiquidaciones.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;
            }
            catch (Exception e)
            {
                MessageBox.Show("Error : " + e.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }

        }

        private void chkCobrador_CheckedChanged(object sender, EventArgs e)
        {
            if (chkCobrador.CheckState == CheckState.Checked)
                cmbCobrador.Enabled = true;
            else
                cmbCobrador.Enabled = false;
        }

        private void ckbFechas_CheckedChanged(object sender, EventArgs e)
        {
            if (ckbFechas.CheckState == CheckState.Checked)
            {
                dtpHasta.Enabled = true;
                dtpDesde.Enabled = true;
            }
            else
            {
                dtpHasta.Enabled = false;
                dtpDesde.Enabled = false;
            }
        }

        private void btnImprimir_Click(object sender, EventArgs e)
        {
            string nro_cupon = txtNroCupon.Text == string.Empty ? null : txtNroCupon.Text;
            int? cobrador_id = chkCobrador.Checked ? (int?)cmbCobrador.SelectedValue : null;
            DateTime? fecha_desde = ckbFechas.Checked ? (DateTime?)dtpDesde.Value : null;
            DateTime? fecha_hasta = ckbFechas.Checked ? (DateTime?)dtpHasta.Value : null;

            try
            {
                frmCobradorLiquidacionDetalleReporte frm = new frmCobradorLiquidacionDetalleReporte(nro_cupon, cobrador_id,
                    fecha_desde, fecha_hasta);

                frm.MdiParent = this.MdiParent;
                frm.Show();
            }
            catch (Exception ex)
            {
                MessageBox.Show("Error : " + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }

        }
    }
}
